package com.edu.d5_tcp2;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * TCP通信，服务端，一发一收，仅单个客户端
 */
public class Server {
    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动成功！~！！！！！");
        /**
         *1、创建ServerSocket的对象，同时为服务端注册端口。
         */
        ServerSocket serverSocket = new ServerSocket(8888);
        /**
         * 2、使用serverSocket对象，调用一个accept方法，等待客户的连接请求,也就是说，客户端的socket与服务端的这个socket打通了一个通道
         */
        Socket socket = serverSocket.accept();
        /**
         * 3、从socket通信管道中得到一个字节输入流
         */
        InputStream inputStream = socket.getInputStream();
        /**
         * 4、用数据输入流来包装字节流
         */
        DataInputStream dataInputStream = new DataInputStream(inputStream);

        /**
         * 5、使用数据输入流，读取从客户端写过来的数据信息。
         */
        while (true) {
            try {
                String s = dataInputStream.readUTF();
                System.out.println(s);
                /**
                 * 同样的，我们也可以获取客户端的IP地址
                 */
                System.out.println(socket.getRemoteSocketAddress()+"----------------------------");
            } catch (Exception e) {
                System.out.println(socket.getRemoteSocketAddress()+"离线了！！！！");
                dataInputStream.close();
                socket.close();
                break;
            }
        }
    }

}
